/*!-----------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * monaco-languages version: 1.6.0(858705e74270e53559a241fdee187e7a6ae53b23)
 * Released under the MIT license
 * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
 *-----------------------------------------------------------------------------*/
define("vs/basic-languages/pug/pug", ["require", "exports"], function (e, t) {
  "use strict";
  Object.defineProperty(t, "__esModule", { value: !0 }),
    (t.conf = {
      comments: { lineComment: "//" },
      brackets: [
        ["{", "}"],
        ["[", "]"],
        ["(", ")"],
      ],
      autoClosingPairs: [
        { open: '"', close: '"', notIn: ["string", "comment"] },
        { open: "'", close: "'", notIn: ["string", "comment"] },
        { open: "{", close: "}", notIn: ["string", "comment"] },
        { open: "[", close: "]", notIn: ["string", "comment"] },
        { open: "(", close: ")", notIn: ["string", "comment"] },
      ],
      folding: { offSide: !0 },
    }),
    (t.language = {
      defaultToken: "",
      tokenPostfix: ".pug",
      ignoreCase: !0,
      brackets: [
        { token: "delimiter.curly", open: "{", close: "}" },
        { token: "delimiter.array", open: "[", close: "]" },
        { token: "delimiter.parenthesis", open: "(", close: ")" },
      ],
      keywords: [
        "append",
        "block",
        "case",
        "default",
        "doctype",
        "each",
        "else",
        "extends",
        "for",
        "if",
        "in",
        "include",
        "mixin",
        "typeof",
        "unless",
        "var",
        "when",
      ],
      tags: [
        "a",
        "abbr",
        "acronym",
        "address",
        "area",
        "article",
        "aside",
        "audio",
        "b",
        "base",
        "basefont",
        "bdi",
        "bdo",
        "blockquote",
        "body",
        "br",
        "button",
        "canvas",
        "caption",
        "center",
        "cite",
        "code",
        "col",
        "colgroup",
        "command",
        "datalist",
        "dd",
        "del",
        "details",
        "dfn",
        "div",
        "dl",
        "dt",
        "em",
        "embed",
        "fieldset",
        "figcaption",
        "figure",
        "font",
        "footer",
        "form",
        "frame",
        "frameset",
        "h1",
        "h2",
        "h3",
        "h4",
        "h5",
        "h6",
        "head",
        "header",
        "hgroup",
        "hr",
        "html",
        "i",
        "iframe",
        "img",
        "input",
        "ins",
        "keygen",
        "kbd",
        "label",
        "li",
        "link",
        "map",
        "mark",
        "menu",
        "meta",
        "meter",
        "nav",
        "noframes",
        "noscript",
        "object",
        "ol",
        "optgroup",
        "option",
        "output",
        "p",
        "param",
        "pre",
        "progress",
        "q",
        "rp",
        "rt",
        "ruby",
        "s",
        "samp",
        "script",
        "section",
        "select",
        "small",
        "source",
        "span",
        "strike",
        "strong",
        "style",
        "sub",
        "summary",
        "sup",
        "table",
        "tbody",
        "td",
        "textarea",
        "tfoot",
        "th",
        "thead",
        "time",
        "title",
        "tr",
        "tracks",
        "tt",
        "u",
        "ul",
        "video",
        "wbr",
      ],
      symbols: /[\+\-\*\%\&\|\!\=\/\.\,\:]+/,
      escapes:
        /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
      tokenizer: {
        root: [
          [
            /^(\s*)([a-zA-Z_-][\w-]*)/,
            {
              cases: {
                "$2@tags": {
                  cases: {
                    "@eos": ["", "tag"],
                    "@default": ["", { token: "tag", next: "@tag.$1" }],
                  },
                },
                "$2@keywords": ["", { token: "keyword.$2" }],
                "@default": ["", ""],
              },
            },
          ],
          [
            /^(\s*)(#[a-zA-Z_-][\w-]*)/,
            {
              cases: {
                "@eos": ["", "tag.id"],
                "@default": ["", { token: "tag.id", next: "@tag.$1" }],
              },
            },
          ],
          [
            /^(\s*)(\.[a-zA-Z_-][\w-]*)/,
            {
              cases: {
                "@eos": ["", "tag.class"],
                "@default": ["", { token: "tag.class", next: "@tag.$1" }],
              },
            },
          ],
          [/^(\s*)(\|.*)$/, ""],
          { include: "@whitespace" },
          [
            /[a-zA-Z_$][\w$]*/,
            { cases: { "@keywords": { token: "keyword.$0" }, "@default": "" } },
          ],
          [/[{}()\[\]]/, "@brackets"],
          [/@symbols/, "delimiter"],
          [/\d+\.\d+([eE][\-+]?\d+)?/, "number.float"],
          [/\d+/, "number"],
          [/"/, "string", '@string."'],
          [/'/, "string", "@string.'"],
        ],
        tag: [
          [/(\.)(\s*$)/, [{ token: "delimiter", next: "@blockText.$S2." }, ""]],
          [/\s+/, { token: "", next: "@simpleText" }],
          [
            /#[a-zA-Z_-][\w-]*/,
            {
              cases: {
                "@eos": { token: "tag.id", next: "@pop" },
                "@default": "tag.id",
              },
            },
          ],
          [
            /\.[a-zA-Z_-][\w-]*/,
            {
              cases: {
                "@eos": { token: "tag.class", next: "@pop" },
                "@default": "tag.class",
              },
            },
          ],
          [/\(/, { token: "delimiter.parenthesis", next: "@attributeList" }],
        ],
        simpleText: [
          [/[^#]+$/, { token: "", next: "@popall" }],
          [/[^#]+/, { token: "" }],
          [
            /(#{)([^}]*)(})/,
            {
              cases: {
                "@eos": [
                  "interpolation.delimiter",
                  "interpolation",
                  { token: "interpolation.delimiter", next: "@popall" },
                ],
                "@default": [
                  "interpolation.delimiter",
                  "interpolation",
                  "interpolation.delimiter",
                ],
              },
            },
          ],
          [/#$/, { token: "", next: "@popall" }],
          [/#/, ""],
        ],
        attributeList: [
          [/\s+/, ""],
          [
            /(\w+)(\s*=\s*)("|')/,
            [
              "attribute.name",
              "delimiter",
              { token: "attribute.value", next: "@value.$3" },
            ],
          ],
          [/\w+/, "attribute.name"],
          [
            /,/,
            {
              cases: {
                "@eos": { token: "attribute.delimiter", next: "@popall" },
                "@default": "attribute.delimiter",
              },
            },
          ],
          [/\)$/, { token: "delimiter.parenthesis", next: "@popall" }],
          [/\)/, { token: "delimiter.parenthesis", next: "@pop" }],
        ],
        whitespace: [
          [
            /^(\s*)(\/\/.*)$/,
            { token: "comment", next: "@blockText.$1.comment" },
          ],
          [/[ \t\r\n]+/, ""],
          [/<!--/, { token: "comment", next: "@comment" }],
        ],
        blockText: [
          [
            /^\s+.*$/,
            {
              cases: {
                "($S2\\s+.*$)": { token: "$S3" },
                "@default": { token: "@rematch", next: "@popall" },
              },
            },
          ],
          [/./, { token: "@rematch", next: "@popall" }],
        ],
        comment: [
          [/[^<\-]+/, "comment.content"],
          [/-->/, { token: "comment", next: "@pop" }],
          [/<!--/, "comment.content.invalid"],
          [/[<\-]/, "comment.content"],
        ],
        string: [
          [
            /[^\\"'#]+/,
            {
              cases: {
                "@eos": { token: "string", next: "@popall" },
                "@default": "string",
              },
            },
          ],
          [
            /@escapes/,
            {
              cases: {
                "@eos": { token: "string.escape", next: "@popall" },
                "@default": "string.escape",
              },
            },
          ],
          [
            /\\./,
            {
              cases: {
                "@eos": { token: "string.escape.invalid", next: "@popall" },
                "@default": "string.escape.invalid",
              },
            },
          ],
          [
            /(#{)([^}]*)(})/,
            [
              "interpolation.delimiter",
              "interpolation",
              "interpolation.delimiter",
            ],
          ],
          [/#/, "string"],
          [
            /["']/,
            {
              cases: {
                "$#==$S2": { token: "string", next: "@pop" },
                "@default": { token: "string" },
              },
            },
          ],
        ],
        value: [
          [
            /[^\\"']+/,
            {
              cases: {
                "@eos": { token: "attribute.value", next: "@popall" },
                "@default": "attribute.value",
              },
            },
          ],
          [
            /\\./,
            {
              cases: {
                "@eos": { token: "attribute.value", next: "@popall" },
                "@default": "attribute.value",
              },
            },
          ],
          [
            /["']/,
            {
              cases: {
                "$#==$S2": { token: "attribute.value", next: "@pop" },
                "@default": { token: "attribute.value" },
              },
            },
          ],
        ],
      },
    });
});
